/**
 * 
 */
package org.stars.daostars;

/**
 * Dato un entity bean utilizzato per contenere i parametri di una query, questa
 * interfaccia espone il metodo che viene normalmente invocato per convertire
 * gli attributi di un entity bean in oggetti validi per il codice sql che
 * abbiamo richiesto di eseguire.
 * <p>
 * Il <code>name</code> del parametro può contenere:
 * <p>
 * <ul>
 * <li><b>nome</b> dell'attributo</li>
 * <li><b>indice</b> dell'attributo, nel caso di parametri posizionali</li>
 * <li><b>user.<i>nome attributo</i></b> nel caso di attributo dell'utente</li>
 * <li><b><code>null</code></b> nel caso di variabile a livello di
 * definizione di dao</li>
 * </ul>
 * 
 * @author Francesco Benincasa (908099)
 * 
 */
public interface ParameterConverter {

	/**
	 * Dato un parametro in input, lo converte nel modo desiderato. Attenzione
	 * che l'input può anche essere <code>null</code>.
	 * <p>
	 * <ul>
	 * <li><b>nome</b> dell'attributo</li>
	 * <li><b>indice</b> dell'attributo, nel caso di parametri posizionali</li>
	 * <li><b>user.<i>nome attributo</i></b> nel caso di attributo
	 * dell'utente</li>
	 * <li><b><code>null</code></b> nel caso di variabile a livello di
	 * definizione di dao</li>
	 * </ul>
	 * 
	 * @param name
	 *            nome dell'attributo.
	 * @param input
	 *            oggetto da convertire.
	 * @return oggetto convertito
	 */
	public Object convert(String name, Object input);
}
